#QTableView组件的使用
from PyQt5.QtWidgets import QAbstractItemView, QAction, QMenuBar, QTableView, QHeaderView, QFormLayout, QVBoxLayout, \
    QWidget, QApplication, QHBoxLayout, QPushButton, QMainWindow, QGridLayout, QLabel, QMessageBox
import sys
from PyQt5.QtCore import  *
from PyQt5.QtGui import  QStandardItemModel,QStandardItem
from xlwingsHelp import read_excel

class WindowClass(QMainWindow):
    #如果集成QMainWindow 则self.setLayout(self.layout) 替换成
    """
        widget=QWidget()
        widget.setLayout(self.layout)
        self.setCentralWidget(widget)
    """
    #即可， 注意集成QWidget和集成QMainWindow时候区别

    def __init__(self,parent=None):
        super(WindowClass, self).__init__(parent)
        self.layout=QVBoxLayout()
        self.setWindowTitle("劳保申请")
        self.resize(1200, 300);
        self.model=QStandardItemModel(4,35)#存储任意结构数据
        self.model.setHorizontalHeaderLabels(['申请类型', '技术部', '质检员', '行管', '机修工', '仓库', '电工', '经警队',
                                              '大梁', '筋板', '铺层', '合模', '半成品切割','半成品补强','人孔板安装','成品','油漆','裁剪','预浸','转运','配重','打孔','小配件','喷砂','注胶','筋板组装','切割','维修','保洁、领料','环安人事专员','新人'
                                              ,'叶片检测室','材料检测室'
                                              ,'维修','后勤'])  # 设置每列标题
        intc = 1
        for row in range(4):

            for column in range(1,35):
                intc+=1
                item = QStandardItem(str(intc))
                # 设置每个位置的文本值
                self.model.setItem(row, column, item)
            intc += 36
        i = QStandardItem("按人数")
        self.model.setItem(0, 0, i)
        i = QStandardItem("班组")
        self.model.setItem(1, 0, i)
        i = QStandardItem("产量")
        self.model.setItem(2, 0, i)
        i = QStandardItem("厂区")
        self.model.setItem(3, 0, i)

        self.data_table_view=QTableView()
        self.data_table_view.setModel(self.model)
        self.layout.addWidget(self.data_table_view)
        self.data_table_view.setSelectionMode(QAbstractItemView.SingleSelection)  # 设置只能选中一行
        # self.tableView.setEditTriggers(QTableView.NoEditTriggers)#不可编辑
        self.data_table_view.setSelectionBehavior(QAbstractItemView.SelectRows);  # 设置只有行选中

        #继承QMainWidow使用下面三行代码
        widget=QWidget()
        widget.setLayout(self.layout)
        self.setCentralWidget(widget)

        #添加menu菜单栏,注意：QMainWindow 才可以有菜单栏，QWidget没有，因此上面只能采用继承QMainWIndow
        tool = self.addToolBar("File") #这里尝试使用QmenuBar，则此时会卡死，无法完成下面appedRow操作（猜测：可能是因为本身不允许menuBar完成这种操作）
        self.action= QAction("添加", self)
        tool.addAction(self.action)
        tool.actionTriggered[QAction].connect(self.processtrigger)

    def processtrigger(self,action):
        if action.text()=="添加":
            model = self.model
            p_array=[];#按人数
            p_team = [];  # 按班组
            p_yield = [];  # 按产量
            p_factory = [];  # 按厂数
            for column in range(1, 35):
                cell_value = model.data(model.index(0, column))  # 返回第row行，第column列内容
                p_array.append(cell_value)
                cell_value = model.data(model.index(1, column))  # 返回第row行，第column列内容
                p_team.append(cell_value)
                cell_value = model.data(model.index(2, column))  # 返回第row行，第column列内容
                p_yield.append(cell_value)
                cell_value = model.data(model.index(3, column))  # 返回第row行，第column列内容
                p_factory.append(cell_value)
            #print(p_array)
            message= read_excel(p_array,p_team,p_yield,p_factory)
            QMessageBox.information(self, '提示', str(message), QMessageBox.Yes)



if __name__=="__main__":
    app=QApplication(sys.argv)
    win=WindowClass()
    win.show()
    sys.exit(app.exec_())